package vistas.modelos;

import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
import objetos.AlumnoDAO;

public class ModeloTablaListaAulaLlena extends AbstractTableModel {

	/**
	 * @Author David
	 */

	// Tipos de campos
	private Class[] types = new Class[] { Object.class, Object.class,
			Object.class, Boolean.class };

	// Booleano para poder modificar la tabla
	private static boolean modificar = false;

	// El nombre y la cantidad de columnas de la tabla

	public static String[] nombresColumnasTodas = { "Nombre",
			"Primer Apellido", "Segundo Apellido", "Falta", "Todos los campos" };

	// El nombre y la cantidad de columnas de la tabla
	public static String[] nombresColumnas = { "Nombre", "Primer Apellido",
			"Segundo Apellido", "Falta" };

	// Datos de la tabla
	private Object[][] datosTabla;

	public ModeloTablaListaAulaLlena(ArrayList<AlumnoDAO> listaAlumnosArraylist) {
		// Constructor
		datosTabla = new Object[listaAlumnosArraylist.size()][nombresColumnas.length];
		int i = 0;
		for (AlumnoDAO alumno : listaAlumnosArraylist) {
			int j = 0;
			datosTabla[i][j] = alumno.getNombre();
			j++;
			datosTabla[i][j] = alumno.getApellidoPrimero();
			j++;
			datosTabla[i][j] = alumno.getApellidoSegundo();
			j++;
			datosTabla[i][j] = new Boolean(false);
			i++;
		}
	}

	@Override
	public String getColumnName(int columna) {
		/**
		 * Coger el nombre de una columna
		 */
		return nombresColumnas[columna].toString();
	}

	@Override
	public int getColumnCount() {
		// TODO Auto-generated method stub
		return nombresColumnas.length;
	}

	@Override
	public int getRowCount() {
		// TODO Auto-generated method stub
		return datosTabla.length;
	}

	@Override
	public Object getValueAt(int fila, int columna) {
		// TODO Auto-generated method stub
		return datosTabla[fila][columna];
	}

	@Override
	public Class<?> getColumnClass(int columna) {
		/**
		 * Obtener clase de cada columna
		 */
		// return getValueAt(0,columna).getClass();
		return super.getColumnClass(columna);
	}

	@Override
	public void setValueAt(Object value, int fila, int columna) {
		// TODO Auto-generated method stub
		datosTabla[fila][columna] = value;
		fireTableCellUpdated(fila, columna);
	}

	@Override
	public boolean isCellEditable(int fila, int columna) {
		/**
		 * Poner cual es editable y cual no
		 */

		return modificar;
	}

}
